/******************************************************************************

	COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2008, 2009, 2010.

	This file is part of the Maxsi Library.

	Maxsi Library is free software: you can redistribute it and/or modify it
	under the terms of the GNU Lesser General Public License as published by
	the Free Software Foundation, either version 3 of the License, or (at your
	option) any later version.

	Maxsi Library is distributed in the hope that it will be useful, but
	WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
	or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
	License for more details.

	You should have received a copy of the GNU Lesser General Public License
	along with Maxsi Library. If not, see <http://www.gnu.org/licenses/>.

	Maxsi Library
	A powerful Cross-Platform C++ General Purpose Library that allows you to
	efficiently create high-performance and reliable applications.

	MaxsiLibrary.h
	The master include file for the Maxsi Library project.

******************************************************************************/

#ifndef MaxsiLibrary_H
#define MaxsiLibrary_H

//=============================================================================
//	Enable this for unofficial beta releases, don't enable this for official
//	releases. This enables beta features that shouldn't go into release builds
//	but should only be present in development builds, because these features
//	are currently unstable, are buggy or don't compile.
//=============================================================================
#define Maxsi_Beta

//=============================================================================
//	Enable this for unofficial development builds in release mode. This
//	surpresses a series of warnings/errors that normally appear only in release
//	builds. These warnings/errors are places so that they should be addressed
//	before the next actual release build. Only enable this if the release build
//	isn't final and you want to compile it without these errors.
//=============================================================================
#define Maxsi_Ignore_Bugs

//=============================================================================
//	Maxsi Library Core.
//=============================================================================
#include "MaxsiDefines.h"
#include "MaxsiHeaders.h"
#include "MaxsiMacros.h"
#include "MaxsiLibraryLink.h"
#include "MaxsiTypes.h"
#include "MaxsiError.h"
#include "MaxsiInterface.h"

//=============================================================================
//	C Runtime extensions for MinGW.
//=============================================================================
#include "MaxsiCRuntime.h"
#include "MaxsiMinGWHacks.h"

//=============================================================================
//	Secure Hash Algorithm (SHA-1) from CSHA1 - A C++ class implementation of
//	the SHA-1 hash algorithm by Dominik Reichl. Thanks!
//=============================================================================
#include "SHA1.h"

//=============================================================================
//	Maxsi Library components.
//=============================================================================
#include "MaxsiString.h"
#include "MaxsiInteger.h"
#include "MaxsiTime.h"
#include "MaxsiComplex.h"
#include "MaxsiSort.h"
#include "MaxsiList.h"
#include "MaxsiArray.h"
#include "MaxsiSHA.h"
#include "MaxsiRegression.h"
#include "MaxsiTranslate.h"
#include "MaxsiCompress.h"
#include "MaxsiDataContainer.h"
#include "MaxsiFileSystem.h" 
#include "MaxsiBufferStreamer.h"
#include "MaxsiBufferAssembler.h"
#include "MaxsiThread.h"
#include "MaxsiBuffer.h"
#include "MaxsiNetworking.h"
#include "MaxsiTLS.h"
#include "MaxsiHTTP.h"
#include "MaxsiFileFormat.h"
#ifdef Maxsi_Support_W32
#include "MaxsiWin7TaskBar.h"
#endif
#if 0 // Files only relevant on Windows.
#include "MaxsiComDlg.h" // Should be integrated into the Maxsi Window System.
#endif
#include "MaxsiThinks.h"
#include "MaxsiWorker.h"

//=============================================================================
//	Maxsi IO.
//=============================================================================
#include "MaxsiIO.h"
#include "MaxsiIODeviceEpoll.h"
#include "MaxsiIODeviceStdOut.h"
#include "MaxsiIOBin2Hex.h"

//=============================================================================
//	If defined in MaxsiDefines.h, use our namespaces by default!
//=============================================================================
#ifndef Maxsi_Disable_Auto_Using_Namespace
UsingMaxsiNamespace
#endif

//=============================================================================
//	Maxsi Window System and various implementations of it on various platforms.
//=============================================================================
#include "MaxsiWindowSystem.h"
#ifdef Maxsi_Support_GTK
#include "MaxsiWindowGTK.h"
#endif
#ifdef Maxsi_Support_W32
#include "MaxsiWindowW32.h"
#endif

//=============================================================================
//	That's it! Your code below can now use the Maxsi Library!
//=============================================================================

#endif
